While executing commands for an application (e.g., a gaming application), a graphics processing unit (GPU) may enter an “invalid state.” In an invalid state, the GPU may crash, lock up, freeze, or stall, for example. The Windows® operating system, for example, includes a feature known as timeout detection and recovery (TDR). If the GPU enters an invalid state, TDR resets the GPU and debugging can begin to try to gain an understanding of what caused the invalid state.
However, there is very little or no information of use that can be used to easily and/or quickly pinpoint the cause of the invalid state. Commands can be executed in parallel on the GPU, and so the central processing unit (CPU) call stack does not provide the required information. The GPU, because it is in an invalid state, cannot be accessed to determine which command may be the source of the problem.
Consequently, end users of the application do not have the information to debug or fix the application without outside intervention, and so are forced to contact the application developer. The application developer can look at the CPU call stack, but this does not provide enough information to pinpoint the source of the invalid state as mentioned above. Hence, the application developer in turn has to contact the GPU developer and/or the operating system developer for assistance. This process can be both time consuming and costly and still might not yield the root cause of the invalid state.